﻿//
// Copyright (c) 2024 BPer
//
#ifndef SRC_BPERRTP_BPERRTPSTAPPAYLOAD_H_
#define SRC_BPERRTP_BPERRTPSTAPPAYLOAD_H_

#include <bperrtp/BPerRtp.h>
#include <bperutil/BPerAvType.h>
#include <bperutil/sys/BPerVector.h>

bPer_vector_declare(BPerSample)

typedef struct BPerRtpSTAPData{
    int32_t nri;
    uint32_t nb;
    char* payload;
    BPerSampleVector nalus;
}BPerRtpSTAPData;

#ifdef __cplusplus
extern "C"
#endif

void bPer_create_stap(BPerRtpSTAPData* stap);
void bPer_destroy_stap(BPerRtpSTAPData* stap);

void bPer_reset_h2645_stap(BPerRtpSTAPData* data);
BPerSample* bPer_get_h264_stap_sps(BPerRtpSTAPData* data);
BPerSample* bPer_get_h265_stap_sps(BPerRtpSTAPData* data);
BPerSample* bPer_get_h264_stap_pps(BPerRtpSTAPData* data);
BPerSample* bPer_get_h265_stap_pps(BPerRtpSTAPData* data);
BPerSample* bPer_get_h265_stap_vps(BPerRtpSTAPData* data);
int32_t bPer_decode_h264_stap(BPerBuffer* buf,BPerRtpSTAPData* data);
int32_t bPer_encode_h264_stap(BPerBuffer* buf,BPerRtpSTAPData* data);
int32_t bPer_decode_h265_stap(BPerBuffer* buf,BPerRtpSTAPData* data);
int32_t bPer_encode_h265_stap(BPerBuffer* buf,BPerRtpSTAPData* data);
#ifdef __cplusplus
}
#endif
#endif /* SRC_BPERRTP_BPERRTPSTAPPAYLOAD_H_ */
